/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package multiface.promonet.jpa;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author diego
 */
@Entity
@Table(name = "lavoro")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Lavoro.findAll", query = "SELECT l FROM Lavoro l"),
    @NamedQuery(name = "Lavoro.findByIdlavoro", query = "SELECT l FROM Lavoro l WHERE l.idlavoro = :idlavoro"),
    @NamedQuery(name = "Lavoro.findByData", query = "SELECT l FROM Lavoro l WHERE l.data = :data"),
    @NamedQuery(name = "Lavoro.findByOrario", query = "SELECT l FROM Lavoro l WHERE l.orario = :orario"),
    @NamedQuery(name = "Lavoro.findByOre", query = "SELECT l FROM Lavoro l WHERE l.ore = :ore"),
    @NamedQuery(name = "Lavoro.findByRetribuzione", query = "SELECT l FROM Lavoro l WHERE l.retribuzione = :retribuzione")})
public class Lavoro implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idlavoro")
    private Integer idlavoro;
    @Basic(optional = false)
    @Column(name = "data")
    @Temporal(TemporalType.TIMESTAMP)
    private Date data;
    @Basic(optional = false)
    @Column(name = "orario")
    private String orario;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Basic(optional = false)
    @Column(name = "ore")
    private BigDecimal ore;
    @Basic(optional = false)
    @Column(name = "retribuzione")
    private BigDecimal retribuzione;
    @JoinColumn(name = "report", referencedColumnName = "idreport")
    @ManyToOne
    private Report report;
    @JoinColumn(name = "puntovendita", referencedColumnName = "idpuntovendita")
    @ManyToOne(optional = false)
    private Puntovendita puntovendita;
    @JoinColumn(name = "promozione", referencedColumnName = "idpromozione")
    @ManyToOne(optional = false)
    private Promozione promozione;
    @JoinColumn(name = "promoter", referencedColumnName = "idutente")
    @ManyToOne
    private Utente promoter;

    public Lavoro() {
    }

    public Lavoro(Integer idlavoro) {
        this.idlavoro = idlavoro;
    }

    public Lavoro(Integer idlavoro, Date data, String orario, BigDecimal ore, BigDecimal retribuzione) {
        this.idlavoro = idlavoro;
        this.data = data;
        this.orario = orario;
        this.ore = ore;
        this.retribuzione = retribuzione;
    }

    public Integer getIdlavoro() {
        return idlavoro;
    }

    public void setIdlavoro(Integer idlavoro) {
        this.idlavoro = idlavoro;
    }

    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

    public String getOrario() {
        return orario;
    }

    public void setOrario(String orario) {
        this.orario = orario;
    }

    public BigDecimal getOre() {
        return ore;
    }

    public void setOre(BigDecimal ore) {
        this.ore = ore;
    }

    public BigDecimal getRetribuzione() {
        return retribuzione;
    }

    public void setRetribuzione(BigDecimal retribuzione) {
        this.retribuzione = retribuzione;
    }

    public Report getReport() {
        return report;
    }

    public void setReport(Report report) {
        this.report = report;
    }

    public Puntovendita getPuntovendita() {
        return puntovendita;
    }

    public void setPuntovendita(Puntovendita puntovendita) {
        this.puntovendita = puntovendita;
    }

    public Promozione getPromozione() {
        return promozione;
    }

    public void setPromozione(Promozione promozione) {
        this.promozione = promozione;
    }

    public Utente getPromoter() {
        return promoter;
    }

    public void setPromoter(Utente promoter) {
        this.promoter = promoter;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idlavoro != null ? idlavoro.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Lavoro)) {
            return false;
        }
        Lavoro other = (Lavoro) object;
        if ((this.idlavoro == null && other.idlavoro != null) || (this.idlavoro != null && !this.idlavoro.equals(other.idlavoro))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "multiface.promonet.jpa.Lavoro[ idlavoro=" + idlavoro + " ]";
    }
    
}
